﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;

namespace ScrumTracker.Model
{
    public partial class User
    {
        public static User Authenticate(string email, string password)
        {
            // Convert the input string to a byte array and compute the hash.
            byte[] data = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(password));

            // Create a new Stringbuilder to collect the bytes
            // and create a string.
            StringBuilder sBuilder = new StringBuilder();

            // Loop through each byte of the hashed data
            // and format each one as a hexadecimal string.
            for (int i = 0; i < data.Length; i++)
            {
                sBuilder.Append(data[i].ToString("x2"));
            }

            // Return the hexadecimal string.
            var passwordHash = sBuilder.ToString();

            var ctx = ScrumTrackerEntities.Instance;
            return ctx.Users.SingleOrDefault(u => u.Email == email && u.PasswordHash == passwordHash);
        }
    }
}
